<?php
/**
 * 时时彩中奖
 */
defined('IN_YuLin') || exit('NO PERMIT!');
echo '<pre>';
// 获取时时彩所有的彩种信息
$lotterySql  = 'SELECT lott.id, lott.`sname`, lott.`title`, lott.`ptid` FROM yulin_lottery AS lott
                LEFT JOIN yulin_lottery_category AS cate
                ON lott.`cate_id` = cate.`id`
                WHERE cate.`sname` = "ssc"';
$lotteryList = $db->getall($lotterySql);

$strMapTid = (!empty($lotteryList) && is_array($lotteryList)) ? implode(',', array_column($lotteryList, 'id')) : '';

$qihaoTab    = Table('lottery_k3');

foreach ($lotteryList as $k => $v){
    $qihaoSql  = 'SELECT id, period, tid, `code` FROM ' . $qihaoTab . ' WHERE tid = ' . $v['id'] . ' AND `code` != "" ORDER BY id DESC LIMIT 20';
    $qihaoList = $db->getall($qihaoSql);
    foreach ($qihaoList as $key => $value) {
        // 获取当前期号后， 根据期号的id来获取所有当前彩种期号的投注项
        $allBetSql = 'SELECT item.id, item.o_id, item.period_id, item.lott_id, item.en_play, item.betting_no, item.betting_str, item.num, item.money, item.odds, item.winner, item.status,
            main.order_no,
            per.period
            FROM ' . Table('lottery_order_item') . ' as item
            LEFT JOIN ' . Table('lottery_order_main') . ' as main
            ON item.o_id = main.id
                LEFT JOIN ' . Table('lottery_k3') . ' as per
                    ON item.period_id = per.id
            WHERE item.winner = "0" AND item.period_id = ' . $value['id'];
        $allBetList= $db->getall($allBetSql);
        if(!$allBetList || empty($allBetList)) continue;
        $value['code_arr'] = explode(',', $value['code']);
        foreach ($value['code_arr'] as $qk => $qv){
            $value['code_arr'][$qk] = intval($qv);
        }
        foreach ($allBetList as $ak => $av){
            checkZhongjiang($av, $value['code_arr'], $db);
        }
    }
}
echo 'END';

/**
 * 检查投注项是否中奖
 * @param $data : 投注内容
 * @param $kaijiang : 开奖结果
 * @param $db   : 数据库连接对象
 */
function checkZhongjiang($data, $code, $db){
    $flag  = false;
    $betArr = explode(',', $data['betting_no']);
    switch ($data['en_play']){
        case 'YX-DWD|FS'://一星定位但|复式
            if($betArr[0] == $code[0] || $betArr[1] == $code[1] || $betArr[2] == $code[2] || $betArr[3] == $code[3] || $betArr[4] == $code[4])
            {
                // 恭喜中奖
                $flag  = true;
            }
            break;
        case 'QE-ZHI_X|FS'://前二直选复式
        case 'QE-ZHI_X|DS'://前二直选单式
            if($betArr[0] == $code[0] && $betArr[1] == $code[1]){
                // 恭喜中奖
                $flag  = true;
            }
            break;
        case 'QE-ZHI_X|HZ'://前二直选和值
            if(bccomp(bcadd($code[0], $code[1], 0),$betArr[0], 0) === 0 )
            {
                // 恭喜中奖
                $flag  = true;
            }
            break;
        case 'QE-ZHI_X|KD'://前二跨度
            if(bccomp(abs(bcsub($code[0], $code[1], 0)),$betArr[0], 0) === 0)
            {
                // 恭喜中奖
                $flag  = true;
            }
            break;
        case 'QE-ZU_X|FS'://前二组选复式
        case 'QE-ZU_X|DS'://前二组选单式
            $tmp= array_shift(array_chunk($code, 2));
            if(in_array($betArr[0], $tmp) && in_array($betArr[1], $tmp)){
                $flag  = true;
            }
            break;
        case 'QE-ZU_X|HZ'://前二组选和值
            //所选数值等于开奖号码的前二位数字相加之和（不含对子）
            if(bccomp($code[0], $code[1], 0) !== 0 && bccomp($betArr[0], bcadd($code[0], $code[1], 0)) ===0)
            {
                $flag  = true;
            }
            break;
        case 'QE-ZU_X|BD'://前二组选包胆
            $tmp= array_shift(array_chunk($code, 2));
            if(bccomp($tmp[0], $tmp[1], 0) !== 0 && in_array($betArr[0], $tmp) ){
                $flag  = true;
            }
            break;
        case 'HE-ZHI_X|FS'://后二直选复式
        case 'HE-ZHI_X|DS'://后二直选单式
            $tmp = array_slice($code, -2);
            if ($betArr[0] ==  $tmp[0] && $betArr[1] ==  $tmp[1]){
                $flag  = true;
            }
            break;
        case 'HE-ZHI_X|HZ'://后二直选和值
            $tmp = array_slice($code, -2);
            if (bccomp($betArr[0], array_sum($tmp), 0) === 0){
                $flag  = true;
            }
            break;
        case 'HE-ZHI_X|KD'://后二跨度
            $tmp = array_slice($code, -2);
            if(bccomp(abs(bcsub($tmp[0], $tmp[1], 0)),$betArr[0], 0) === 0)
            {
                // 恭喜中奖
                $flag  = true;
            }
            break;
        case 'HE-ZU_X|FS'://后二组选复式
        case 'HE-ZU_X|DS'://后二组选单式
            $tmp = array_slice($code, -2);
            if(in_array($betArr[0], $tmp) && in_array($betArr[1], $tmp))
            {
                $flag  = true;
            }
            break;
        case 'HE-ZU_X|HZ'://后二组选和值
            $tmp = array_slice($code, -2);
            if(bccomp($tmp[0], $tmp[1], 0) !== 0 && bccomp($betArr[0], bcadd($tmp[0], $tmp[1], 0)) ===0)
            {
                $flag  = true;
            }
            break;
        case 'HE-ZU_X|BD'://后二组选包胆
            $tmp = array_slice($code, -2);
            if(bccomp($tmp[0], $tmp[1], 0) !== 0 && in_array($betArr[0], $tmp) ){
                $flag  = true;
            }
            break;
        case 'QS-ZHI_X|FS':
            // 前三直选复式
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'QS-ZHI_X|DS':
            // 前三直选单式
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'ZS-ZHI_X|FS':
            // 中三： 直选复式
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'ZS-ZHI_X|DS':
            // 中三： 直选单式
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'HS-ZHI_X|FS':
            // 后三： 直选复式
            $beginSlice = $beginSlice ? $beginSlice : 2;
        case 'HS-ZHI_X|DS':
            // 后三： 直选单式
            $beginSlice = $beginSlice ? $beginSlice : 2;
            $tmp  = array_slice($code, $beginSlice, 3);
            if($betArr[0] == $tmp[0] && $betArr[1] == $tmp[1] && $betArr[2] == $tmp[2]){
                $flag  = true;
            }
            break;

        case 'QS-ZHI_X|HZ':
            //前三直选和值
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'ZS-ZHI_X|HZ':
            // 中三： 直选和值
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'HS-ZHI_X|HZ':
            // 后三： 直选和值
            $beginSlice = $beginSlice ? $beginSlice : 2;
            $tmp  = array_slice($code, $beginSlice, 3);
            if($betArr[0] == array_sum($tmp)){
                $flag  = true;
            }
            break;
        case 'QS-ZHI_X|KD':
            //前三直选跨度
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'ZS-ZHI_X|KD':
            // 中三： 直选跨度
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'HS-ZHI_X|KD':
            // 后三： 直选跨度
            $beginSlice = $beginSlice ? $beginSlice : 2;
            $tmp  = array_slice($code, $beginSlice, 3);
            sort($tmp);
            $max = array_pop($tmp);
            $min = array_shift($tmp);
            if($betArr[0] == ($max - $min)){
                $flag  = true;
            }
            break;
        case 'QS-ZU_X|HZ':
            //前三组选和值
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'ZS-ZU_X|HZ':
            // 中三： 组选和值
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'HS-ZU_X|HZ':
            // 后三： 组选和值
            $beginSlice = $beginSlice ? $beginSlice : 2;
            $tmp  = array_slice($code, $beginSlice, 3);
            // 不含豹子
            if(count(array_unique($tmp)) == 1) break;
            if($betArr[0] == array_sum($tmp)){
                $flag  = true;
            }
            $checkOdds  = true;
            break;

        case 'QS-ZU_X|ZS':
            //前三组选组三
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'QS-ZU_X|ZL':
            //前三组选组六
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'QS-ZU_X|HHZX':
            //前三混合组选
            $beginSlice = $beginSlice ? $beginSlice : 0;
            $checkOdds  = true;
        case 'QS-ZU_X|ZSDS':
            // 前三组三单式
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'QS-ZU_X|ZLDS':
            // 前三组六单式
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'ZS-ZU_X|ZS':
            // 中三： 组选组三
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'ZS-ZU_X|ZL':
            // 中三： 组选组六
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'ZS-ZU_X|HHZX':
            // 中三： 混合组选
            $beginSlice = $beginSlice ? $beginSlice : 1;
            $checkOdds  = true;
        case 'ZS-ZU_X|ZSDS':
            // 中三： 组三单式
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'ZS-ZU_X|ZLDS':
            // 中三： 组六单式
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'HS-ZU_X|ZS':
            // 后三： 组选组三
            $beginSlice = $beginSlice ? $beginSlice : 2;
        case 'HS-ZU_X|ZL':
            // 后三： 组选组六
            $beginSlice = $beginSlice ? $beginSlice : 2;
        case 'HS-ZU_X|HHZX':
            // 后三： 混合组选
            $beginSlice = $beginSlice ? $beginSlice : 2;
            $checkOdds  = true;
        case 'HS-ZU_X|ZSDS':
            // 后三： 组选组三单式
            $beginSlice = $beginSlice ? $beginSlice : 2;
        case 'HS-ZU_X|ZLDS':
            // 后三： 组选组六单式
            $beginSlice = $beginSlice ? $beginSlice : 2;

            $tmp  = array_slice($code, $beginSlice, 3);
            sort($tmp);
            sort($betArr);
            if($betArr[0] == $tmp[0] && $betArr[1] == $tmp[1] && $betArr[2] == $tmp[2]){
                $flag  = true;
            }
            break;
        case 'QS-ZU_X|BD':
            // 前三组选包胆
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'ZS-ZU_X|BD':
            // 中三： 组选包胆
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'HS-ZU_X|BD':
            // 后三： 组选包胆
            $beginSlice = $beginSlice ? $beginSlice : 2;
            $checkOdds  = true;
            $tmp  = array_slice($code, $beginSlice, 3);
            // 投注号码不存在开奖号码中
            if (!in_array($betArr[0], $tmp)) break;
            // 豹子不算
            if(count(array_unique($tmp)) == 1) break;
            $flag  = true;
            break;
        case 'QS-BDW|YM':
            // 前三不定位一码不定位
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'ZS-BDW|YM':
            // 中三： 一码不定位
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'HS-BDW|YM':
            // 后三： 一码不定位
            $beginSlice = $beginSlice ? $beginSlice : 2;
            $tmp  = array_slice($code, $beginSlice, 3);
            if(in_array($betArr[0], $tmp)){
                $flag  = true;
            }
            break;
        case 'QS-BDW|EM':
            // 前三： 二码不定位
            $beginSlice = $beginSlice ? $beginSlice : 0;
        case 'ZS-BDW|EM':
            // 中三： 二码不定位
            $beginSlice = $beginSlice ? $beginSlice : 1;
        case 'HS-BDW|EM':
            // 后三： 二码不定位
            $beginSlice = $beginSlice ? $beginSlice : 2;

            $tmp  = array_slice($code, $beginSlice, 3);
            if(in_array($betArr[0], $tmp) && in_array($betArr[1], $tmp)){
                $flag  = true;
            }
            break;


        case 'SI_X-ZHI_X|FS':
            // 四星： 直选复式
        case 'SI_X-ZHI_X|DS':
            // 四星： 直选单式
            $tmp = array_slice($code, 1, 4);
            $flag  = true;
            foreach ($betArr as $k => $v){
                if ($v != $tmp[$k]) {
                    $flag  = false;
                    break;
                }
            }
            break;
        case 'SI_X-ZU_X|ZX24':
            // 四星： 组选24
        case 'SI_X-ZU_X|ZX12':
            // 四星： 组选12
        case 'SI_X-ZU_X|ZX6':
            // 四星： 组选6
        case 'SI_X-ZU_X|ZX4':
            // 四星： 组选4
            $tmp = array_slice($code, 1, 4);
            sort($tmp);
            sort($betArr);
            $flag  = true;
            foreach ($betArr as $k => $v){
                if ($v != $tmp[$k]) {
                    $flag  = false;
                    break;
                }
            }
            break;
        case 'SI_X-BDW|YM':
            // 四星： 一码不定位
            $tmp = array_slice($code, 1, 4);
            if(in_array($betArr[0], $tmp)) $flag  = true;
            break;
        case 'SI_X-BDW|EM':
            // 四星： 二码不定位
            $tmp = array_slice($code, 1, 4);
            foreach ($betArr as $k => $v){
                $flagIndex = array_search($v, $tmp);
                if ($flagIndex === false){
                    break;
                }else{
                    unset($tmp[$flagIndex]);
                }
            }
            // 如果剔除了两个元素，那说明两个号码都进入了判断，移除了开奖号码，开奖号码长度变为2
            if(count($tmp) == 2) $flag  = true;
            break;
        case 'WU_X-ZHI_X|FS':
            // 五星： 直选复式
        case 'WU_X-ZHI_X|DS':
            // 五星： 直选单式
            $flag  = true;
            foreach ($betArr as $k => $v){
                if($v != $code[$k]) {
                    $flag  = false;
                    break;
                }
            }
            break;
        case 'WU_X-ZU_X|ZX120':
            // 五星： 组选120
        case 'WU_X-ZU_X|ZX60':
            // 五星： 组选60
        case 'WU_X-ZU_X|ZX30':
            // 五星： 组选30
        case 'WU_X-ZU_X|ZX20':
            // 五星： 组选20
        case 'WU_X-ZU_X|ZX10':
            // 五星： 组选10
        case 'WU_X-ZU_X|ZX5':
            // 五星： 组选5
            $flag  = true;
            sort($betArr);
            sort($code);
            foreach ($betArr as $k => $v){
                if($v != $code[$k]) {
                    $flag  = false;
                    break;
                }
            }
            break;
        case 'WU_X-BDW|YM':
            // 五星： 一码不定位
            $checkNums = $checkNums ? $checkNums : 4;
        case 'WU_X-BDW|EM':
            // 五星： 二码不定位
            $checkNums = $checkNums ? $checkNums : 3;
        case 'WU_X-BDW|SM':
            // 五星： 三码不定位
            $checkNums = $checkNums ? $checkNums : 2;
            $tmp       = $code;
            foreach ($betArr as $k => $v){
                $flagIndex = array_search($v, $tmp);
                if ($flagIndex === false){
                    break;
                }else{
                    unset($tmp[$flagIndex]);
                }
            }
            // 如果剔除了两个元素，那说明两个号码都进入了判断，移除了开奖号码，开奖号码长度变为$checkNums
            if(count($tmp) == $checkNums) $flag  = true;
            break;
        case 'WU_X-QW|YFFS':
            // 五星： 一帆风顺
            $checkTimes = $checkTimes ? $checkTimes : 4;
        case 'WU_X-QW|HSCS':
            // 五星： 好事成双
            $checkTimes = $checkTimes ? $checkTimes : 3;
        case 'WU_X-QW|SXBX':
            // 五星： 三星报喜
            $checkTimes = $checkTimes ? $checkTimes : 2;
        case 'WU_X-QW|SJFC':
            // 五星： 四季发财
            $checkTimes = $checkTimes ? $checkTimes : 1;
            
            $tmp         = $code;
            $repeayTimes = 0;
            foreach ($betArr as $k => $v){
                $flagIndex = array_search($v, $tmp);
                if ($flagIndex === false){
                    break;
                }else{
                    unset($tmp[$flagIndex]);
                }
            }
            // 如果剔除了两个元素，那说明两个号码都进入了判断，移除了开奖号码，开奖号码长度变为$checkNums
            if(count($tmp) == $checkTimes) $flag  = true;
            break;
        case 'DXDS-DXDS|QE':
            // 大小单双： 前二
        case 'DXDS-DXDS|HE':
            // 大小单双： 后二
        case 'DXDS-DXDS|QS':
            // 大小单双： 前三
        case 'DXDS-DXDS|HS':
            // 大小单双： 后三
            $tmp = array_slice($code, 0, 2);
            $checkFlag = true;
            $flag  = true;
            foreach ($betArr as $k => $v){
                switch ($v){
                    case '大':
                        if ($tmp[$k] <= 4) $checkFlag = false; 
                        break;
                    case '小':
                        if ($tmp[$k] > 4) $checkFlag  = false;
                        break;
                    case '单':
                        if ($tmp[$k] == 0 || !$tmp[$k] % 2) $checkFlag  = false;
                        break;
                    case '双':
                        if ($tmp[$k] % 2) $checkFlag  = false;
                        break;
                }
                if (!$checkFlag) {
                    $flag  = false;
                    break;
                }
            }
            break;
        default:
            break;
    }
    $update['winner'] = 1;
    if ($flag){
        $update['winner'] = 2;
    }
    if ($checkOdds){
        // 特殊投注， 检查号码，设定赔率更新<如果没有重号，则赔率变一半>
        if(count(array_unique($tmp)) == 3) {
            $odds  = '326.665';
            $update['odds'] = '326.665';
        }
        $update['remark'] = $betArr[0] . ' 赔率为' . $odds;
    }
    $flag = $db->update('lottery_order_item', $update, 'id=' . $data['id']);
    if ($flag){
        echo 'success<br/>';
    }else{
        echo 'error[' . $data['en_play'] . ':' . $data['betting_no'] . ']<br/>';
    }
    $logFile   = '/www/wwwroot/www.dz8888.com/crontab/log/';
    $logStr    = date('Y-m-d H:i:s') . ': 中奖状态（' . '订单号：' . $data['order_no'] . '，投注号' . $data['betting_no'] . '， 期号' . $data['period'] . '）';
//     openCodeLog($logFile, 'syxw_winner_log' . date('ymd') . '.txt', $logStr);
}


function openCodeLog($logDir, $fileName,  $str){
    // 检查路劲是否存在
    if (!file_exists($logDir)){
        mkdir($logDir, 0777, true);
    }
    $file = fopen($logDir . $fileName, "a+");
    fwrite($file, $str . "\r\n");
    fclose($file);
}


